package com.bsj.power.common.def.http.dto;

import lombok.Builder;
import lombok.Data;

import java.util.Arrays;
import java.util.stream.Collectors;

/**
 * @author yinhao
 * @version 1.0
 * @description 工单同步请求对象
 * @date 2024/7/10
 */
@Data
@Builder
public class WorkHttpDTO {

    /**
     * 工单编号
     */
    private String wonum;
    /**
     * 类型 1只请求进行中的工单 2根据工单号差，什么类型工单都返回
     */
    private Integer type;
    /**
     * 目标开始时间
     */
    private String targstartdate;
    /**
     * 目标完成时间
     */
    private String targcompdate;
    /**
     * 页大小
     */
    private Integer pageSize;
    /**
     * 页码
     */
    private Integer pageNum;

    public String convertObjectToKeyValue() {
        return Arrays.stream(this.getClass().getDeclaredFields())
                //私有字段变成可访问
                .peek(item -> item.setAccessible(true))
                //获得字段名称跟值拼接
                .map(item -> {
                    Object object = null;
                    try {
                        object = item.get(this);
                    } catch (IllegalAccessException e) {
                        e.printStackTrace();
                    }
                    if (object == null) {
                        return null;
                    }
                    return item.getName() + "=" + object;
                })
                //排除字段中可能存在的空值
                .filter(s -> s != null && !s.isEmpty())
                .collect(Collectors.joining("&"));
    }
}
